Field of the Invention
The present invention relates to the field of object database transaction management and more particularly to concurrent transaction management in an triplestore database.
Description of the Related Art
A database is a collection of data in which data entries can be created, updated, read and deleted. For most, a database is a file or collection of files in which data entries are stored in records and through which data can be located and accessed according to database queries. The database can take several forms from the traditional flat file database, to the relationship database, to the more recent object database. In this regard, a relational database is often defined as a collection of data items organized as a set of formally described tables from which data can be readily accessed. The relational database is created using a relational model and for many decades has been the predominant choice in storing data.
Unlike a relational database, an object database, also referred to as an object-oriented database management system, is a database management system in which information is represented in the form of objects as used in object-oriented programming. Object databases are different from relational databases in that most object databases offer a query language that allows stored objects to be located within the object database according to a declarative programming approach, whereas in a relational model, a tabular oriented query language requiring extensive use of “join” statements enables stored data location.
A triplestore is a way of representing and storing information entirely in the form of triples which also has been referred to in the past as “statements”. In a triplestore, each triple includes three parts: the subject, the predicate, and the object—and represents a relationship from the subject to the object. Of note, a triplestore may be used to implement an object database with the object identifiers forming the subjects of the triples, the attributes forming the predicates and the attribute values forming the objects. Therefore, in an object database utilizing a triplestore, each entity is persisted as a set of triples.
In a typical implementation, the triplestore is built upon a relational database and has a central table that contains all the triples. The central table is often referred to as the statement table. Typically the columns in the statement table are actually simple foreign keys into other tables in order to normalize the data. However, it remains the case that the statement table forms the basis of the entire database. Importantly, the triplestore is accessed by way of a programming environment through which operations to retrieve, query or manipulate the persisted entities are executed. As such, at some point the complete entity representation such as an object must be mapped to the persisted set of triples.
The mapping process, however, can cause issues related to the consistency of the entity representation in a multi-user environment. Specifically, as records in the triplestore pertaining to an object change in consequence of the activities of an updating user, another reading user concurrently accessing other records relating to the object can ultimately map together data from the triplestore for an object in which portions of the data are no longer valid due to updates imposed upon the object by the updating user.